package 双指针;

import java.util.Arrays;

/**
 * 找出数组中的中心下标，这个中心下标的左侧元素和与右侧元素和相等,如果没有中心下标则返回-1，当有多个时返回最左侧一个
 * 例如：nums: 1 2 3 5 5 1
 *  中心下标为 3 左侧元素为 [1,2,3] 右侧元素为 [5,1]
 *
 * 思路：
 *  1.求出数组的和
 *  2.用一个数total表示左侧的和，当左侧的和*2等于总和时-当前元素时，左侧元素的和与右侧的和相等
 */
public class Ch02_中心下标 {
    public static void main(String[] args) {
//        int[] nums={5,4,3,3,7,5,9};     // return  -1
        int[] nums={5,4,3,3,7,5};     // return  3
        System.out.println(pivotIndex(nums));
    }

    public static int pivotIndex(int[] nums){
        int sum= Arrays.stream(nums).sum(); //对数组进行求和
        int total=0;
        for (int i=0;i<nums.length;i++){
            if (total*2==sum-nums[i]){
                return i;
            }
            total+=nums[i];
        }
        return -1;
    }
}
